#pragma once
#include "node.h"
/**
 * tree class
 */
template<class T>
class Tree {
private:
    Node<T>* _root;

public:
    Tree() { _root=0; }
    virtual ~Tree() {}
    
    virtual void insert(Node<T>* pNode) = 0;
    virtual Node<T>* find(Node<T>* pNode) = 0;
    virtual Node<T>* remove(Node<T>* pNode) = 0;

    virtual Node<T>* root() { return _root; }
};
